package com.momoda.monitor.controller;


import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RequestMapping(value = "filemonitor")
@RestController
@Slf4j
public class FileMonitorController {


    public FileAlterationMonitor monitor;


    //    @ApiOperation(value = "启动文件监控", notes = "")
    @GetMapping(value = "start")
    public String start() throws Exception {

//        // 监控目录
//        String rootDir = PropertiesUtil.getProperty("ftp.rootpath", "D:\\SFTP");
//
//        String property = PropertiesUtil.getProperty("ftp.interval", "3");
//        long interval1 = Long.parseLong(property);
//        // 轮询间隔 5 秒
//        long interval = TimeUnit.SECONDS.toMillis(interval1);
//        // 创建过滤器  目录过滤器
//        IOFileFilter dir = FileFilterUtils.and(FileFilterUtils.directoryFileFilter(), HiddenFileFilter.VISIBLE);
//        // 不要info.json文件
//        IOFileFilter file1 = FileFilterUtils.notFileFilter(FileFilterUtils.nameFileFilter("info.json"));
//        //不要~$开头文件夹 修改word文件时，会产生临时文件以此开头
//        IOFileFilter file2 = FileFilterUtils.notFileFilter(FileFilterUtils.prefixFileFilter("~$"));
//        IOFileFilter file = FileFilterUtils.and(file1, file2);
//
////        目录和文件结合
//        IOFileFilter filter = FileFilterUtils.or(dir, file);
//
//        // 使用过滤器
//        FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir), filter);
//
//        observer.addListener(new FileListener());
//        //创建文件变化监听器
//        FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);
////        monitor = new FileAlterationMonitor(interval, observer);
//        // 开始监控
//        monitor.start();
//        log.info("文件监控启动成功，正在监控中，目前 " + property + " 秒监控文件变化");
        return "start success";
    }

    @GetMapping(value = "stop")
    public void stop() throws Exception {
        monitor.stop();
    }

    @GetMapping(value = "refresh")
    public void refresh() {

        //1.监控目录
        String rootDir = "D:\\SFTP";


    }


}
